CC=gcc
HEURISTIQUE=
ITERATIF=
RECURSIF=
COUNT=

ifeq ($(ALL), yes)
	COUNT=-DCOUNT
endif

ifeq ($(I), yes)
	ITERATIF=-DITERATIF
endif


ifeq ($(R), yes)
	RECURSIF=-DRECURSIF
endif


ifeq ($(H),5)
	HEURISTIQUE=-DH5
else
	ifeq ($(H), 4)
		HEURISTIQUE=-DH4
	else
		ifeq ($(H), 3)
			HEURISTIQUE=-DH3
		else
			ifeq ($(H), 2)
				HEURISTIQUE=-DH2
			else
				ifeq ($(H), 1)
					HEURISTIQUE=-DH1
				else
					HEURISTIQUE=-DH5
				endif
			endif
		endif
	endif
endif

ifeq ($(DOT),yes)
	CFLAGS=-g3 -W -Wall -DDOT $(HEURISTIQUE) $(ITERATIF) $(RECURSIF) $(COUNT)
	LDFLAGS=-lm -g -DDOT $(HEURISTIQUE) $(ITERATIF) $(RECURSIF) $(COUNT)
else
	CFLAGS=-g3 -W -Wall $(HEURISTIQUE) $(ITERATIF) $(RECURSIF) $(COUNT)
	LDFLAGS=-lm -g $(HEURISTIQUE) $(ITERATIF) $(RECURSIF) $(COUNT)
endif





dpcsolver: dpcsolver.o primitives_structure.o dpc.o tests.o graphe.o
	$(CC) $(LFLAGS) $^ -o $@ -pg

all: dpcsolver generateurs

dpcsolver.o: dpcsolver.c structure.h primitives_structure.h tests.h graphe.h
	$(CC) $(CFLAGS) -c dpcsolver.c -pg

primitives_structure.o: primitives_structure.c structure.h primitives_structure.h
	$(CC) $(CFLAGS) -c primitives_structure.c -pg

dpc.o: dpc.c dpc.h structure.h primitives_structure.h
	$(CC) $(CFLAGS) -c dpc.c -pg

graphe.o: graphe.c graphe.h structure.h
	$(CC) $(CFLAGS) -c graphe.c -pg

tests.o: tests.c tests.h 
	$(CC) $(CFLAGS) -c tests.c -pg

generateurs:
	(cd generateur;make all)

clean:
	rm -f *.o dpcsolver
	(cd generateur;make clean)
